<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>

    /*
    * 函数对象才会给你自定义prototype 当然普通对象你也可以自定义
    * prototype,但是普通对象不会自动帮你找到函数对象中的函数，
    * 我们可以看到 person1中并没有sayName的函数,但是person1是
    * Person的实例,Person的prototype中定义了sayName方法,他会向上去
    * 找到sayName方法
    * */
    function Person() {

        this.name = 'canvas'

    }

    Person.prototype.sayName = function () {
        alert(this.name);
    };


    // let person11 = new Person();
    // document.write(person11.__proto__ === Person.prototype)


    //其实就是一个普通的对象
    // Person.prototype = {
    //     name:  'canvas',
    //     age: 28,
    //     job: 'Software Engineer',
    //     sayName: function() {
    //         alert(this.name);
    //     }
    // };


    let person1 = new Person();
    // person1.sayName(); // 'canvas'
    //
    let person2 = new Person();
    // person2.sayName(); // 'canvas'

    // document.write(person1.sayName === person2.sayName); //true
    //
    // document.write(person1.__proto__ === Person.prototype); //true

    // document.write(person1.age);

    // //prototype.constructor属性会自动的指向本Person
    // document.write(Person.prototype.constructor === Person);
    //
    // document.write(person1.constructor === Person);

    // let person3 = {};

    // document.write(person1.__proto__ === Person.prototype);
    // document.write(person3.__proto__ === Object.prototype);
    // document.write(person3.__proto__.constructor === Object)

    //prototype到底是什么

    function Person(){}
    // console.log(typeof Person.prototype); //Object
    // console.log(typeof Function.prototype); // Function，这个特殊
    // console.log(typeof Object.prototype); // Object
    // console.log(typeof Function.prototype.prototype);

    document.write(Function.prototype.__proto__ === Function.prototype)





</script>

</body>
</html>